package es.truscoandrisco.discotecasmadrid;

import java.io.IOException;
import java.net.MalformedURLException;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.curso.android.SocialConnector.Facebook.BaseRequestListener;
import com.curso.android.SocialConnector.Facebook.SessionEvents;
import com.curso.android.Utils.SDKFacebook.AsyncFacebookRunner;
import com.curso.android.Utils.SDKFacebook.DialogError;
import com.curso.android.Utils.SDKFacebook.Facebook;
import com.curso.android.Utils.SDKFacebook.FacebookError;
import com.curso.android.Utils.SDKFacebook.Facebook.DialogListener;

public class DiscoActivity extends Activity{
	
	private static String nombre;
	private static int longitud;
	private static int latitud;
	private Activity mActivity;
	private static String URL_MY_STATUS = "me/feed/";
	final Facebook mFacebook = new Facebook("178261242225279");

	@Override   
    public void onCreate(Bundle savedInstanceState) {
		
		requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.disco);
        mActivity = this;
        nombre = getIntent().getStringExtra("NOMBRE");
        String direccion = getIntent().getStringExtra("DIRECCION");
        String descripcion = getIntent().getStringExtra("DESCRIPCION");
        String evento1 = getIntent().getStringExtra("EVENTO1");
        String evento2 = getIntent().getStringExtra("EVENTO2");
        latitud = getIntent().getIntExtra("LATITUD", 0);
        longitud = getIntent().getIntExtra("LONGITUD", 0);
        String fecha = getIntent().getStringExtra("FECHA");
                
        Discoteca disco = new Discoteca(nombre, direccion, descripcion, evento1, evento2, 
										"", "", "", "", latitud, longitud, null, null);

		String ruta = "http://..." + nombre + "...jpg";
		
		try{
			disco.setImagenImg(ruta, "");
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		Button mapa = (Button) findViewById(R.id.mapa);

		mapa.setOnClickListener(new View.OnClickListener() {
	
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent i = new Intent(DiscoActivity.this, mapas.class);
				i.putExtra("LONGITUD", longitud);
				i.putExtra("LATITUD", latitud);
				i.putExtra("NOMBRE", nombre);
				startActivity(i);
			}
		});

		Button facebook = (Button) findViewById(R.id.facebook);
		
		facebook.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				
				
		       	String [] permissions = new String[2];
		       	permissions[0] = "publish_stream";
		       	permissions[1] = "read_stream";	
		        
				final CharSequence item1 = "Estoy pensando en ir a " + nombre + " esta noche...";
				final CharSequence item2 = "Esta noche voy a ir a " + nombre;
				final CharSequence item3 = "Estoy yendo a " + nombre;
				final CharSequence item4 = "Estoy en " + nombre;
				
				final CharSequence[] items = {item1, item2, item3, item4};

				AlertDialog.Builder builder = new AlertDialog.Builder(DiscoActivity.this);
				builder.setTitle("Selecciona el mensaje: ");
				builder.setItems(items, new DialogInterface.OnClickListener() {
					
				public void onClick(DialogInterface dialog, int item) {

		        	String status = (String) items[item];
		        		
				    if (updateStatus(status))
				        Toast.makeText(getApplicationContext(), "Mensaje publicado correctamente",
				        		Toast.LENGTH_SHORT).show();
				    else
					    Toast.makeText(getApplicationContext(), "El mensaje no ha podido ser publicado",
					        	Toast.LENGTH_SHORT).show();

				    }
				});
				
				AlertDialog alert = builder.create();
				alert.show();
				
				if (!mFacebook.isSessionValid())
					mFacebook.authorize(mActivity, permissions, new LoginDialogListener());

			}
		});
		
		ImageView imgv = (ImageView) findViewById(R.id.logo);
		imgv.setImageDrawable(disco.getImagenImg());
		
        TextView d = (TextView) findViewById(R.id.direccion);
        d.setText(direccion);
        
        TextView e1 = (TextView) findViewById(R.id.evento1);
        e1.setText(evento1);
        
        TextView e2 = (TextView) findViewById(R.id.evento2);
        e2.setText(evento2);
        
		TextView t = (TextView) findViewById(R.id.descripcion);
        t.setText(descripcion);
        
        TextView f = (TextView) findViewById(R.id.fecha);
        f.setText("Ultima actualización: " + fecha);
        
	}
	
	private final class LoginDialogListener implements DialogListener {
        public void onComplete(Bundle values) {
            SessionEvents.onLoginSuccess();
            // 0 -> session doesn't expire.
            mFacebook.setAccessExpires(0);
        }

        public void onFacebookError(FacebookError error) {
            SessionEvents.onLoginError(error.getMessage());
        }
        
        public void onError(DialogError error) {
            SessionEvents.onLoginError(error.getMessage());
        }

        public void onCancel() {
            SessionEvents.onLoginError("Action Canceled");
        }
    }
	
	private boolean updateStatus(String newStatus){
		if (!mFacebook.isSessionValid() || newStatus.trim().equals("")) {	
			return false;
		}else{			
			Bundle bundle = new Bundle();
			bundle.putString("message", newStatus.trim());
			try{
				AsyncFacebookRunner async = new AsyncFacebookRunner(mFacebook);
				async.request(URL_MY_STATUS, bundle, "POST", new UpdateMyStatusListener());
			}catch(Exception ex){
				return false;
			}
		}
		return true;
	}
	
	public class UpdateMyStatusListener extends BaseRequestListener {
        public void onComplete(final String response) {
        }
    }

	
}
